/*******************************************************************************
 * Copyright (c) 2001, 2014 IBM Corp. and others
 *
 * This program and the accompanying materials are made available under
 * the terms of the Eclipse Public License 2.0 which accompanies this
 * distribution and is available at https://www.eclipse.org/legal/epl-2.0/
 * or the Apache License, Version 2.0 which accompanies this distribution and
 * is available at https://www.apache.org/licenses/LICENSE-2.0.
 *
 * This Source Code may also be made available under the following
 * Secondary Licenses when the conditions for such availability set
 * forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
 * General Public License, version 2 with the GNU Classpath
 * Exception [1] and GNU General Public License, version 2 with the
 * OpenJDK Assembly Exception [2].
 *
 * [1] https://www.gnu.org/software/classpath/license.html
 * [2] http://openjdk.java.net/legal/assembly-exception.html
 *
 * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
 *******************************************************************************/

/* Automatically generated by generate_test_suit.pl. */

/* DO NOT MODIFY THIS GENERATED FILE. CHANGE THE generate_test_suite.pl SCRIPT INSTEAD */

#include <iostream>

#include "j9_types.hpp"

using namespace std;


static void testaddU_8(void)	
{
	//Locals
	U_8 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION U_8 add" << endl;

	cout << "SUBSECTION U_8 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		U_8 result1 = base + u_8;
		U_8 result2 = u_8 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_8," << hex << (unsigned int)result1 << "," << hex << (unsigned int)result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		U_8 result1 = base + u_8;
		U_8 result2 = u_8 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_8," << hex << (unsigned int)result1 << "," << hex << (unsigned int)result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		U_8 result1 = base + u_8;
		U_8 result2 = u_8 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_8," << hex << (unsigned int)result1 << "," << hex << (unsigned int)result2 << endl;
	}
	base = 0xff;
	u_8 = 1;
	{
		U_8 result1 = base + u_8;
		U_8 result2 = u_8 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_8," << hex << (unsigned int)result1 << "," << hex << (unsigned int)result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	u_16 = 1;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_16 = 1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_16 = -1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_8," << hex << (unsigned int)base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testsubU_8(void)	
{
	//Locals
	U_8 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION U_8 sub" << endl;

	cout << "SUBSECTION U_8 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		U_8 result1 = base - u_8;
		U_8 result2 = u_8 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_8," << hex << (unsigned int)result1 << "," << hex << (unsigned int)result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		U_8 result1 = base - u_8;
		U_8 result2 = u_8 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_8," << hex << (unsigned int)result1 << "," << hex << (unsigned int)result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		U_8 result1 = base - u_8;
		U_8 result2 = u_8 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_8," << hex << (unsigned int)result1 << "," << hex << (unsigned int)result2 << endl;
	}
	base = 0xff;
	u_8 = 1;
	{
		U_8 result1 = base - u_8;
		U_8 result2 = u_8 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_8," << hex << (unsigned int)result1 << "," << hex << (unsigned int)result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	u_16 = 1;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_16 = 1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_16 = -1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_8 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xff;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_8," << hex << (unsigned int)base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testaddU_16(void)	
{
	//Locals
	U_16 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION U_16 add" << endl;

	cout << "SUBSECTION U_16 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "U_16," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "U_16," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "U_16," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	u_8 = 1;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "U_16," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		U_16 result1 = base + u_16;
		U_16 result2 = u_16 + base;
		cout << "U_16," << hex << base << ",add,U_16," << hex << u_16 << ",U_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		U_16 result1 = base + u_16;
		U_16 result2 = u_16 + base;
		cout << "U_16," << hex << base << ",add,U_16," << hex << u_16 << ",U_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		U_16 result1 = base + u_16;
		U_16 result2 = u_16 + base;
		cout << "U_16," << hex << base << ",add,U_16," << hex << u_16 << ",U_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	u_16 = 1;
	{
		U_16 result1 = base + u_16;
		U_16 result2 = u_16 + base;
		cout << "U_16," << hex << base << ",add,U_16," << hex << u_16 << ",U_16," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_16," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_16," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_16," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_16," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_16," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_16," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_16," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_16," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_16 = 1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_16 = -1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "U_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "U_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_16," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_16," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_16," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_16," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testsubU_16(void)	
{
	//Locals
	U_16 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION U_16 sub" << endl;

	cout << "SUBSECTION U_16 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "U_16," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "U_16," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "U_16," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	u_8 = 1;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "U_16," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		U_16 result1 = base - u_16;
		U_16 result2 = u_16 - base;
		cout << "U_16," << hex << base << ",sub,U_16," << hex << u_16 << ",U_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		U_16 result1 = base - u_16;
		U_16 result2 = u_16 - base;
		cout << "U_16," << hex << base << ",sub,U_16," << hex << u_16 << ",U_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		U_16 result1 = base - u_16;
		U_16 result2 = u_16 - base;
		cout << "U_16," << hex << base << ",sub,U_16," << hex << u_16 << ",U_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	u_16 = 1;
	{
		U_16 result1 = base - u_16;
		U_16 result2 = u_16 - base;
		cout << "U_16," << hex << base << ",sub,U_16," << hex << u_16 << ",U_16," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_16," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_16," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_16," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_16," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_16," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_16," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_16," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_16," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_16 = 1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_16 = -1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "U_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "U_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_16," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_16," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_16," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_16," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_16 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffff;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testaddU_32(void)	
{
	//Locals
	U_32 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION U_32 add" << endl;

	cout << "SUBSECTION U_32 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		U_32 result1 = base + u_8;
		U_32 result2 = u_8 + base;
		cout << "U_32," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		U_32 result1 = base + u_8;
		U_32 result2 = u_8 + base;
		cout << "U_32," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		U_32 result1 = base + u_8;
		U_32 result2 = u_8 + base;
		cout << "U_32," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_8 = 1;
	{
		U_32 result1 = base + u_8;
		U_32 result2 = u_8 + base;
		cout << "U_32," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		U_32 result1 = base + u_16;
		U_32 result2 = u_16 + base;
		cout << "U_32," << hex << base << ",add,U_16," << hex << u_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		U_32 result1 = base + u_16;
		U_32 result2 = u_16 + base;
		cout << "U_32," << hex << base << ",add,U_16," << hex << u_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		U_32 result1 = base + u_16;
		U_32 result2 = u_16 + base;
		cout << "U_32," << hex << base << ",add,U_16," << hex << u_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_16 = 1;
	{
		U_32 result1 = base + u_16;
		U_32 result2 = u_16 + base;
		cout << "U_32," << hex << base << ",add,U_16," << hex << u_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_32," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_32," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_32," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "U_32," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_32," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_32," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_32," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_32," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		U_32 result1 = base + i_16;
		U_32 result2 = i_16 + base;
		cout << "U_32," << hex << base << ",add,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		U_32 result1 = base + i_16;
		U_32 result2 = i_16 + base;
		cout << "U_32," << hex << base << ",add,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		U_32 result1 = base + i_16;
		U_32 result2 = i_16 + base;
		cout << "U_32," << hex << base << ",add,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		U_32 result1 = base + i_16;
		U_32 result2 = i_16 + base;
		cout << "U_32," << hex << base << ",add,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_16 = 1;
	{
		U_32 result1 = base + i_16;
		U_32 result2 = i_16 + base;
		cout << "U_32," << hex << base << ",add,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_16 = -1;
	{
		U_32 result1 = base + i_16;
		U_32 result2 = i_16 + base;
		cout << "U_32," << hex << base << ",add,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		U_32 result1 = base + i_32;
		U_32 result2 = i_32 + base;
		cout << "U_32," << hex << base << ",add,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		U_32 result1 = base + i_32;
		U_32 result2 = i_32 + base;
		cout << "U_32," << hex << base << ",add,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		U_32 result1 = base + i_32;
		U_32 result2 = i_32 + base;
		cout << "U_32," << hex << base << ",add,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		U_32 result1 = base + i_32;
		U_32 result2 = i_32 + base;
		cout << "U_32," << hex << base << ",add,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_32 = 1;
	{
		U_32 result1 = base + i_32;
		U_32 result2 = i_32 + base;
		cout << "U_32," << hex << base << ",add,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_32 = -1;
	{
		U_32 result1 = base + i_32;
		U_32 result2 = i_32 + base;
		cout << "U_32," << hex << base << ",add,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "U_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_32," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_32," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_32," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "U_32," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "U_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testsubU_32(void)	
{
	//Locals
	U_32 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION U_32 sub" << endl;

	cout << "SUBSECTION U_32 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		U_32 result1 = base - u_8;
		U_32 result2 = u_8 - base;
		cout << "U_32," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		U_32 result1 = base - u_8;
		U_32 result2 = u_8 - base;
		cout << "U_32," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		U_32 result1 = base - u_8;
		U_32 result2 = u_8 - base;
		cout << "U_32," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_8 = 1;
	{
		U_32 result1 = base - u_8;
		U_32 result2 = u_8 - base;
		cout << "U_32," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		U_32 result1 = base - u_16;
		U_32 result2 = u_16 - base;
		cout << "U_32," << hex << base << ",sub,U_16," << hex << u_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		U_32 result1 = base - u_16;
		U_32 result2 = u_16 - base;
		cout << "U_32," << hex << base << ",sub,U_16," << hex << u_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		U_32 result1 = base - u_16;
		U_32 result2 = u_16 - base;
		cout << "U_32," << hex << base << ",sub,U_16," << hex << u_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_16 = 1;
	{
		U_32 result1 = base - u_16;
		U_32 result2 = u_16 - base;
		cout << "U_32," << hex << base << ",sub,U_16," << hex << u_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_32," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_32," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_32," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "U_32," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_32," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_32," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_32," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_32," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		U_32 result1 = base - i_16;
		U_32 result2 = i_16 - base;
		cout << "U_32," << hex << base << ",sub,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		U_32 result1 = base - i_16;
		U_32 result2 = i_16 - base;
		cout << "U_32," << hex << base << ",sub,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		U_32 result1 = base - i_16;
		U_32 result2 = i_16 - base;
		cout << "U_32," << hex << base << ",sub,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		U_32 result1 = base - i_16;
		U_32 result2 = i_16 - base;
		cout << "U_32," << hex << base << ",sub,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_16 = 1;
	{
		U_32 result1 = base - i_16;
		U_32 result2 = i_16 - base;
		cout << "U_32," << hex << base << ",sub,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_16 = -1;
	{
		U_32 result1 = base - i_16;
		U_32 result2 = i_16 - base;
		cout << "U_32," << hex << base << ",sub,I_16," << hex << i_16 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		U_32 result1 = base - i_32;
		U_32 result2 = i_32 - base;
		cout << "U_32," << hex << base << ",sub,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		U_32 result1 = base - i_32;
		U_32 result2 = i_32 - base;
		cout << "U_32," << hex << base << ",sub,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		U_32 result1 = base - i_32;
		U_32 result2 = i_32 - base;
		cout << "U_32," << hex << base << ",sub,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		U_32 result1 = base - i_32;
		U_32 result2 = i_32 - base;
		cout << "U_32," << hex << base << ",sub,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_32 = 1;
	{
		U_32 result1 = base - i_32;
		U_32 result2 = i_32 - base;
		cout << "U_32," << hex << base << ",sub,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_32 = -1;
	{
		U_32 result1 = base - i_32;
		U_32 result2 = i_32 - base;
		cout << "U_32," << hex << base << ",sub,I_32," << hex << i_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "U_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_32," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_32," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_32," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "U_32," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_32 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "U_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testaddU_64(void)	
{
	//Locals
	U_64 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION U_64 add" << endl;

	cout << "SUBSECTION U_64 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		U_64 result1 = base + u_8;
		U_64 result2 = u_8 + base;
		cout << "U_64," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		U_64 result1 = base + u_8;
		U_64 result2 = u_8 + base;
		cout << "U_64," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		U_64 result1 = base + u_8;
		U_64 result2 = u_8 + base;
		cout << "U_64," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	u_8 = 1;
	{
		U_64 result1 = base + u_8;
		U_64 result2 = u_8 + base;
		cout << "U_64," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		U_64 result1 = base + u_16;
		U_64 result2 = u_16 + base;
		cout << "U_64," << hex << base << ",add,U_16," << hex << u_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		U_64 result1 = base + u_16;
		U_64 result2 = u_16 + base;
		cout << "U_64," << hex << base << ",add,U_16," << hex << u_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		U_64 result1 = base + u_16;
		U_64 result2 = u_16 + base;
		cout << "U_64," << hex << base << ",add,U_16," << hex << u_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	u_16 = 1;
	{
		U_64 result1 = base + u_16;
		U_64 result2 = u_16 + base;
		cout << "U_64," << hex << base << ",add,U_16," << hex << u_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_64 result1 = base + u_32;
		U_64 result2 = u_32 + base;
		cout << "U_64," << hex << base << ",add,U_32," << hex << u_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_64 result1 = base + u_32;
		U_64 result2 = u_32 + base;
		cout << "U_64," << hex << base << ",add,U_32," << hex << u_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_64 result1 = base + u_32;
		U_64 result2 = u_32 + base;
		cout << "U_64," << hex << base << ",add,U_32," << hex << u_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	u_32 = 1;
	{
		U_64 result1 = base + u_32;
		U_64 result2 = u_32 + base;
		cout << "U_64," << hex << base << ",add,U_32," << hex << u_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_64," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_64," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_64," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "U_64," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		U_64 result1 = base + i_16;
		U_64 result2 = i_16 + base;
		cout << "U_64," << hex << base << ",add,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		U_64 result1 = base + i_16;
		U_64 result2 = i_16 + base;
		cout << "U_64," << hex << base << ",add,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		U_64 result1 = base + i_16;
		U_64 result2 = i_16 + base;
		cout << "U_64," << hex << base << ",add,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		U_64 result1 = base + i_16;
		U_64 result2 = i_16 + base;
		cout << "U_64," << hex << base << ",add,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_16 = 1;
	{
		U_64 result1 = base + i_16;
		U_64 result2 = i_16 + base;
		cout << "U_64," << hex << base << ",add,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_16 = -1;
	{
		U_64 result1 = base + i_16;
		U_64 result2 = i_16 + base;
		cout << "U_64," << hex << base << ",add,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		U_64 result1 = base + i_32;
		U_64 result2 = i_32 + base;
		cout << "U_64," << hex << base << ",add,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		U_64 result1 = base + i_32;
		U_64 result2 = i_32 + base;
		cout << "U_64," << hex << base << ",add,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		U_64 result1 = base + i_32;
		U_64 result2 = i_32 + base;
		cout << "U_64," << hex << base << ",add,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		U_64 result1 = base + i_32;
		U_64 result2 = i_32 + base;
		cout << "U_64," << hex << base << ",add,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_32 = 1;
	{
		U_64 result1 = base + i_32;
		U_64 result2 = i_32 + base;
		cout << "U_64," << hex << base << ",add,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_32 = -1;
	{
		U_64 result1 = base + i_32;
		U_64 result2 = i_32 + base;
		cout << "U_64," << hex << base << ",add,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		U_64 result1 = base + i_64;
		U_64 result2 = i_64 + base;
		cout << "U_64," << hex << base << ",add,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		U_64 result1 = base + i_64;
		U_64 result2 = i_64 + base;
		cout << "U_64," << hex << base << ",add,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		U_64 result1 = base + i_64;
		U_64 result2 = i_64 + base;
		cout << "U_64," << hex << base << ",add,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		U_64 result1 = base + i_64;
		U_64 result2 = i_64 + base;
		cout << "U_64," << hex << base << ",add,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_64 = 1;
	{
		U_64 result1 = base + i_64;
		U_64 result2 = i_64 + base;
		cout << "U_64," << hex << base << ",add,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_64 = -1;
	{
		U_64 result1 = base + i_64;
		U_64 result2 = i_64 + base;
		cout << "U_64," << hex << base << ",add,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		U_64 result1 = base + udata;
		U_64 result2 = udata + base;
		cout << "U_64," << hex << base << ",add,UDATA," << hex << udata << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		U_64 result1 = base + udata;
		U_64 result2 = udata + base;
		cout << "U_64," << hex << base << ",add,UDATA," << hex << udata << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		U_64 result1 = base + udata;
		U_64 result2 = udata + base;
		cout << "U_64," << hex << base << ",add,UDATA," << hex << udata << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	udata = 1;
	{
		U_64 result1 = base + udata;
		U_64 result2 = udata + base;
		cout << "U_64," << hex << base << ",add,UDATA," << hex << udata << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH IDATA" << endl;

	cout << "INVALID: U_64,add,IDATA" << endl;


}

static void testsubU_64(void)	
{
	//Locals
	U_64 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION U_64 sub" << endl;

	cout << "SUBSECTION U_64 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		U_64 result1 = base - u_8;
		U_64 result2 = u_8 - base;
		cout << "U_64," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		U_64 result1 = base - u_8;
		U_64 result2 = u_8 - base;
		cout << "U_64," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		U_64 result1 = base - u_8;
		U_64 result2 = u_8 - base;
		cout << "U_64," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	u_8 = 1;
	{
		U_64 result1 = base - u_8;
		U_64 result2 = u_8 - base;
		cout << "U_64," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		U_64 result1 = base - u_16;
		U_64 result2 = u_16 - base;
		cout << "U_64," << hex << base << ",sub,U_16," << hex << u_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		U_64 result1 = base - u_16;
		U_64 result2 = u_16 - base;
		cout << "U_64," << hex << base << ",sub,U_16," << hex << u_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		U_64 result1 = base - u_16;
		U_64 result2 = u_16 - base;
		cout << "U_64," << hex << base << ",sub,U_16," << hex << u_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	u_16 = 1;
	{
		U_64 result1 = base - u_16;
		U_64 result2 = u_16 - base;
		cout << "U_64," << hex << base << ",sub,U_16," << hex << u_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_64 result1 = base - u_32;
		U_64 result2 = u_32 - base;
		cout << "U_64," << hex << base << ",sub,U_32," << hex << u_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_64 result1 = base - u_32;
		U_64 result2 = u_32 - base;
		cout << "U_64," << hex << base << ",sub,U_32," << hex << u_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_64 result1 = base - u_32;
		U_64 result2 = u_32 - base;
		cout << "U_64," << hex << base << ",sub,U_32," << hex << u_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	u_32 = 1;
	{
		U_64 result1 = base - u_32;
		U_64 result2 = u_32 - base;
		cout << "U_64," << hex << base << ",sub,U_32," << hex << u_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_64," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_64," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_64," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "U_64," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		U_64 result1 = base - i_16;
		U_64 result2 = i_16 - base;
		cout << "U_64," << hex << base << ",sub,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		U_64 result1 = base - i_16;
		U_64 result2 = i_16 - base;
		cout << "U_64," << hex << base << ",sub,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		U_64 result1 = base - i_16;
		U_64 result2 = i_16 - base;
		cout << "U_64," << hex << base << ",sub,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		U_64 result1 = base - i_16;
		U_64 result2 = i_16 - base;
		cout << "U_64," << hex << base << ",sub,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_16 = 1;
	{
		U_64 result1 = base - i_16;
		U_64 result2 = i_16 - base;
		cout << "U_64," << hex << base << ",sub,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_16 = -1;
	{
		U_64 result1 = base - i_16;
		U_64 result2 = i_16 - base;
		cout << "U_64," << hex << base << ",sub,I_16," << hex << i_16 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		U_64 result1 = base - i_32;
		U_64 result2 = i_32 - base;
		cout << "U_64," << hex << base << ",sub,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		U_64 result1 = base - i_32;
		U_64 result2 = i_32 - base;
		cout << "U_64," << hex << base << ",sub,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		U_64 result1 = base - i_32;
		U_64 result2 = i_32 - base;
		cout << "U_64," << hex << base << ",sub,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		U_64 result1 = base - i_32;
		U_64 result2 = i_32 - base;
		cout << "U_64," << hex << base << ",sub,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_32 = 1;
	{
		U_64 result1 = base - i_32;
		U_64 result2 = i_32 - base;
		cout << "U_64," << hex << base << ",sub,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_32 = -1;
	{
		U_64 result1 = base - i_32;
		U_64 result2 = i_32 - base;
		cout << "U_64," << hex << base << ",sub,I_32," << hex << i_32 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		U_64 result1 = base - i_64;
		U_64 result2 = i_64 - base;
		cout << "U_64," << hex << base << ",sub,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		U_64 result1 = base - i_64;
		U_64 result2 = i_64 - base;
		cout << "U_64," << hex << base << ",sub,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		U_64 result1 = base - i_64;
		U_64 result2 = i_64 - base;
		cout << "U_64," << hex << base << ",sub,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		U_64 result1 = base - i_64;
		U_64 result2 = i_64 - base;
		cout << "U_64," << hex << base << ",sub,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_64 = 1;
	{
		U_64 result1 = base - i_64;
		U_64 result2 = i_64 - base;
		cout << "U_64," << hex << base << ",sub,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	i_64 = -1;
	{
		U_64 result1 = base - i_64;
		U_64 result2 = i_64 - base;
		cout << "U_64," << hex << base << ",sub,I_64," << hex << i_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		U_64 result1 = base - udata;
		U_64 result2 = udata - base;
		cout << "U_64," << hex << base << ",sub,UDATA," << hex << udata << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		U_64 result1 = base - udata;
		U_64 result2 = udata - base;
		cout << "U_64," << hex << base << ",sub,UDATA," << hex << udata << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		U_64 result1 = base - udata;
		U_64 result2 = udata - base;
		cout << "U_64," << hex << base << ",sub,UDATA," << hex << udata << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffffffffffff;
	udata = 1;
	{
		U_64 result1 = base - udata;
		U_64 result2 = udata - base;
		cout << "U_64," << hex << base << ",sub,UDATA," << hex << udata << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION U_64 WITH IDATA" << endl;

	cout << "INVALID: U_64,sub,IDATA" << endl;


}

static void testaddI_16(void)	
{
	//Locals
	I_16 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION I_16 add" << endl;

	cout << "SUBSECTION I_16 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_16," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_16," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_16," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	u_8 = 1;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_16," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	u_8 = 1;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_16," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_16," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_16," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_16," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	u_16 = 1;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_16," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	u_16 = 1;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_16," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_16," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_16," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_16," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_16," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_16," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_16," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_16," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_16," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_16," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_16," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_16 result1 = base + i_16;
		I_16 result2 = i_16 + base;
		cout << "I_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_16 result1 = base + i_16;
		I_16 result2 = i_16 + base;
		cout << "I_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_16 result1 = base + i_16;
		I_16 result2 = i_16 + base;
		cout << "I_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_16 result1 = base + i_16;
		I_16 result2 = i_16 + base;
		cout << "I_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_16 = 1;
	{
		I_16 result1 = base + i_16;
		I_16 result2 = i_16 + base;
		cout << "I_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_16 = -1;
	{
		I_16 result1 = base + i_16;
		I_16 result2 = i_16 + base;
		cout << "I_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_16 = 1;
	{
		I_16 result1 = base + i_16;
		I_16 result2 = i_16 + base;
		cout << "I_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_16 = -1;
	{
		I_16 result1 = base + i_16;
		I_16 result2 = i_16 + base;
		cout << "I_16," << hex << base << ",add,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_16," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_16," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_16," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_16," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_16," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_16," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_16," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_16," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testsubI_16(void)	
{
	//Locals
	I_16 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION I_16 sub" << endl;

	cout << "SUBSECTION I_16 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_16," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_16," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_16," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	u_8 = 1;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_16," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	u_8 = 1;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_16," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_16," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_16," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_16," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	u_16 = 1;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_16," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	u_16 = 1;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_16," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_16," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_16," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_16," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_16," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_16," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_16," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_16," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_16," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_16," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_16," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_16 result1 = base - i_16;
		I_16 result2 = i_16 - base;
		cout << "I_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_16 result1 = base - i_16;
		I_16 result2 = i_16 - base;
		cout << "I_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_16 result1 = base - i_16;
		I_16 result2 = i_16 - base;
		cout << "I_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_16 result1 = base - i_16;
		I_16 result2 = i_16 - base;
		cout << "I_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_16 = 1;
	{
		I_16 result1 = base - i_16;
		I_16 result2 = i_16 - base;
		cout << "I_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_16 = -1;
	{
		I_16 result1 = base - i_16;
		I_16 result2 = i_16 - base;
		cout << "I_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_16 = 1;
	{
		I_16 result1 = base - i_16;
		I_16 result2 = i_16 - base;
		cout << "I_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_16 = -1;
	{
		I_16 result1 = base - i_16;
		I_16 result2 = i_16 - base;
		cout << "I_16," << hex << base << ",sub,I_16," << hex << i_16 << ",I_16," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_16," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_16," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_16," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_16," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_16," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_16," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_16," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_16 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fff;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_16," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testaddI_32(void)	
{
	//Locals
	I_32 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION I_32 add" << endl;

	cout << "SUBSECTION I_32 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_32," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_32," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_32," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_8 = 1;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_32," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_8 = 1;
	{
		I_32 result1 = base + u_8;
		I_32 result2 = u_8 + base;
		cout << "I_32," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_32," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_32," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_32," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_16 = 1;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_32," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_16 = 1;
	{
		I_32 result1 = base + u_16;
		I_32 result2 = u_16 + base;
		cout << "I_32," << hex << base << ",add,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_32," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_32," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_32," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_32," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_32 = 1;
	{
		U_32 result1 = base + u_32;
		U_32 result2 = u_32 + base;
		cout << "I_32," << hex << base << ",add,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_32," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_32," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_32," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_32," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_32," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "I_32," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "I_32," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "I_32," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "I_32," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_16 = 1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "I_32," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_16 = -1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "I_32," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_16 = 1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "I_32," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_16 = -1;
	{
		I_32 result1 = base + i_16;
		I_32 result2 = i_16 + base;
		cout << "I_32," << hex << base << ",add,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_32," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_32," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_32," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_32," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_32," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_32," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_32 = 1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_32," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_32 = -1;
	{
		I_32 result1 = base + i_32;
		I_32 result2 = i_32 + base;
		cout << "I_32," << hex << base << ",add,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_32," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_32," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_32," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_32," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_32," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "I_32," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "I_32," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testsubI_32(void)	
{
	//Locals
	I_32 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION I_32 sub" << endl;

	cout << "SUBSECTION I_32 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_32," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_32," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_32," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_8 = 1;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_32," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_8 = 1;
	{
		I_32 result1 = base - u_8;
		I_32 result2 = u_8 - base;
		cout << "I_32," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_32," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_32," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_32," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_16 = 1;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_32," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_16 = 1;
	{
		I_32 result1 = base - u_16;
		I_32 result2 = u_16 - base;
		cout << "I_32," << hex << base << ",sub,U_16," << hex << u_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_32," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_32," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_32," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_32," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_32 = 1;
	{
		U_32 result1 = base - u_32;
		U_32 result2 = u_32 - base;
		cout << "I_32," << hex << base << ",sub,U_32," << hex << u_32 << ",U_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_32," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_32," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_32," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_32," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_32," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "I_32," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "I_32," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "I_32," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "I_32," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_16 = 1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "I_32," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_16 = -1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "I_32," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_16 = 1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "I_32," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_16 = -1;
	{
		I_32 result1 = base - i_16;
		I_32 result2 = i_16 - base;
		cout << "I_32," << hex << base << ",sub,I_16," << hex << i_16 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_32," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_32," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_32," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_32," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_32," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_32," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_32 = 1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_32," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_32 = -1;
	{
		I_32 result1 = base - i_32;
		I_32 result2 = i_32 - base;
		cout << "I_32," << hex << base << ",sub,I_32," << hex << i_32 << ",I_32," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_32," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_32," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_32," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_32," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_32," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "I_32," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_32 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "I_32," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testaddI_64(void)	
{
	//Locals
	I_64 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION I_64 add" << endl;

	cout << "SUBSECTION I_64 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		I_64 result1 = base + u_8;
		I_64 result2 = u_8 + base;
		cout << "I_64," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		I_64 result1 = base + u_8;
		I_64 result2 = u_8 + base;
		cout << "I_64," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		I_64 result1 = base + u_8;
		I_64 result2 = u_8 + base;
		cout << "I_64," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	u_8 = 1;
	{
		I_64 result1 = base + u_8;
		I_64 result2 = u_8 + base;
		cout << "I_64," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	u_8 = 1;
	{
		I_64 result1 = base + u_8;
		I_64 result2 = u_8 + base;
		cout << "I_64," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		I_64 result1 = base + u_16;
		I_64 result2 = u_16 + base;
		cout << "I_64," << hex << base << ",add,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		I_64 result1 = base + u_16;
		I_64 result2 = u_16 + base;
		cout << "I_64," << hex << base << ",add,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		I_64 result1 = base + u_16;
		I_64 result2 = u_16 + base;
		cout << "I_64," << hex << base << ",add,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	u_16 = 1;
	{
		I_64 result1 = base + u_16;
		I_64 result2 = u_16 + base;
		cout << "I_64," << hex << base << ",add,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	u_16 = 1;
	{
		I_64 result1 = base + u_16;
		I_64 result2 = u_16 + base;
		cout << "I_64," << hex << base << ",add,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		I_64 result1 = base + u_32;
		I_64 result2 = u_32 + base;
		cout << "I_64," << hex << base << ",add,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		I_64 result1 = base + u_32;
		I_64 result2 = u_32 + base;
		cout << "I_64," << hex << base << ",add,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		I_64 result1 = base + u_32;
		I_64 result2 = u_32 + base;
		cout << "I_64," << hex << base << ",add,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	u_32 = 1;
	{
		I_64 result1 = base + u_32;
		I_64 result2 = u_32 + base;
		cout << "I_64," << hex << base << ",add,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	u_32 = 1;
	{
		I_64 result1 = base + u_32;
		I_64 result2 = u_32 + base;
		cout << "I_64," << hex << base << ",add,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_64," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_64," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_64," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_64," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "I_64," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_64 result1 = base + i_16;
		I_64 result2 = i_16 + base;
		cout << "I_64," << hex << base << ",add,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_64 result1 = base + i_16;
		I_64 result2 = i_16 + base;
		cout << "I_64," << hex << base << ",add,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_64 result1 = base + i_16;
		I_64 result2 = i_16 + base;
		cout << "I_64," << hex << base << ",add,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_64 result1 = base + i_16;
		I_64 result2 = i_16 + base;
		cout << "I_64," << hex << base << ",add,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_16 = 1;
	{
		I_64 result1 = base + i_16;
		I_64 result2 = i_16 + base;
		cout << "I_64," << hex << base << ",add,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_16 = -1;
	{
		I_64 result1 = base + i_16;
		I_64 result2 = i_16 + base;
		cout << "I_64," << hex << base << ",add,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_16 = 1;
	{
		I_64 result1 = base + i_16;
		I_64 result2 = i_16 + base;
		cout << "I_64," << hex << base << ",add,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_16 = -1;
	{
		I_64 result1 = base + i_16;
		I_64 result2 = i_16 + base;
		cout << "I_64," << hex << base << ",add,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_64 result1 = base + i_32;
		I_64 result2 = i_32 + base;
		cout << "I_64," << hex << base << ",add,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_64 result1 = base + i_32;
		I_64 result2 = i_32 + base;
		cout << "I_64," << hex << base << ",add,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_64 result1 = base + i_32;
		I_64 result2 = i_32 + base;
		cout << "I_64," << hex << base << ",add,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_64 result1 = base + i_32;
		I_64 result2 = i_32 + base;
		cout << "I_64," << hex << base << ",add,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_32 = 1;
	{
		I_64 result1 = base + i_32;
		I_64 result2 = i_32 + base;
		cout << "I_64," << hex << base << ",add,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_32 = -1;
	{
		I_64 result1 = base + i_32;
		I_64 result2 = i_32 + base;
		cout << "I_64," << hex << base << ",add,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_32 = 1;
	{
		I_64 result1 = base + i_32;
		I_64 result2 = i_32 + base;
		cout << "I_64," << hex << base << ",add,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_32 = -1;
	{
		I_64 result1 = base + i_32;
		I_64 result2 = i_32 + base;
		cout << "I_64," << hex << base << ",add,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_64," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_64," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_64," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_64," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_64," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_64," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_64," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "I_64," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH UDATA" << endl;

	cout << "INVALID: I_64,add,UDATA" << endl;


	cout << "SUBSECTION I_64 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		I_64 result1 = base + idata;
		I_64 result2 = idata + base;
		cout << "I_64," << hex << base << ",add,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		I_64 result1 = base + idata;
		I_64 result2 = idata + base;
		cout << "I_64," << hex << base << ",add,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		I_64 result1 = base + idata;
		I_64 result2 = idata + base;
		cout << "I_64," << hex << base << ",add,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		I_64 result1 = base + idata;
		I_64 result2 = idata + base;
		cout << "I_64," << hex << base << ",add,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	idata = 1;
	{
		I_64 result1 = base + idata;
		I_64 result2 = idata + base;
		cout << "I_64," << hex << base << ",add,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	idata = -1;
	{
		I_64 result1 = base + idata;
		I_64 result2 = idata + base;
		cout << "I_64," << hex << base << ",add,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	idata = 1;
	{
		I_64 result1 = base + idata;
		I_64 result2 = idata + base;
		cout << "I_64," << hex << base << ",add,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	idata = -1;
	{
		I_64 result1 = base + idata;
		I_64 result2 = idata + base;
		cout << "I_64," << hex << base << ",add,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testsubI_64(void)	
{
	//Locals
	I_64 base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION I_64 sub" << endl;

	cout << "SUBSECTION I_64 WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		I_64 result1 = base - u_8;
		I_64 result2 = u_8 - base;
		cout << "I_64," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		I_64 result1 = base - u_8;
		I_64 result2 = u_8 - base;
		cout << "I_64," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		I_64 result1 = base - u_8;
		I_64 result2 = u_8 - base;
		cout << "I_64," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	u_8 = 1;
	{
		I_64 result1 = base - u_8;
		I_64 result2 = u_8 - base;
		cout << "I_64," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	u_8 = 1;
	{
		I_64 result1 = base - u_8;
		I_64 result2 = u_8 - base;
		cout << "I_64," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		I_64 result1 = base - u_16;
		I_64 result2 = u_16 - base;
		cout << "I_64," << hex << base << ",sub,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		I_64 result1 = base - u_16;
		I_64 result2 = u_16 - base;
		cout << "I_64," << hex << base << ",sub,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		I_64 result1 = base - u_16;
		I_64 result2 = u_16 - base;
		cout << "I_64," << hex << base << ",sub,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	u_16 = 1;
	{
		I_64 result1 = base - u_16;
		I_64 result2 = u_16 - base;
		cout << "I_64," << hex << base << ",sub,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	u_16 = 1;
	{
		I_64 result1 = base - u_16;
		I_64 result2 = u_16 - base;
		cout << "I_64," << hex << base << ",sub,U_16," << hex << u_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		I_64 result1 = base - u_32;
		I_64 result2 = u_32 - base;
		cout << "I_64," << hex << base << ",sub,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		I_64 result1 = base - u_32;
		I_64 result2 = u_32 - base;
		cout << "I_64," << hex << base << ",sub,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		I_64 result1 = base - u_32;
		I_64 result2 = u_32 - base;
		cout << "I_64," << hex << base << ",sub,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	u_32 = 1;
	{
		I_64 result1 = base - u_32;
		I_64 result2 = u_32 - base;
		cout << "I_64," << hex << base << ",sub,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	u_32 = 1;
	{
		I_64 result1 = base - u_32;
		I_64 result2 = u_32 - base;
		cout << "I_64," << hex << base << ",sub,U_32," << hex << u_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_64," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_64," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_64," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_64," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "I_64," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		I_64 result1 = base - i_16;
		I_64 result2 = i_16 - base;
		cout << "I_64," << hex << base << ",sub,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		I_64 result1 = base - i_16;
		I_64 result2 = i_16 - base;
		cout << "I_64," << hex << base << ",sub,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		I_64 result1 = base - i_16;
		I_64 result2 = i_16 - base;
		cout << "I_64," << hex << base << ",sub,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		I_64 result1 = base - i_16;
		I_64 result2 = i_16 - base;
		cout << "I_64," << hex << base << ",sub,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_16 = 1;
	{
		I_64 result1 = base - i_16;
		I_64 result2 = i_16 - base;
		cout << "I_64," << hex << base << ",sub,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_16 = -1;
	{
		I_64 result1 = base - i_16;
		I_64 result2 = i_16 - base;
		cout << "I_64," << hex << base << ",sub,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_16 = 1;
	{
		I_64 result1 = base - i_16;
		I_64 result2 = i_16 - base;
		cout << "I_64," << hex << base << ",sub,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_16 = -1;
	{
		I_64 result1 = base - i_16;
		I_64 result2 = i_16 - base;
		cout << "I_64," << hex << base << ",sub,I_16," << hex << i_16 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		I_64 result1 = base - i_32;
		I_64 result2 = i_32 - base;
		cout << "I_64," << hex << base << ",sub,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		I_64 result1 = base - i_32;
		I_64 result2 = i_32 - base;
		cout << "I_64," << hex << base << ",sub,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		I_64 result1 = base - i_32;
		I_64 result2 = i_32 - base;
		cout << "I_64," << hex << base << ",sub,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		I_64 result1 = base - i_32;
		I_64 result2 = i_32 - base;
		cout << "I_64," << hex << base << ",sub,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_32 = 1;
	{
		I_64 result1 = base - i_32;
		I_64 result2 = i_32 - base;
		cout << "I_64," << hex << base << ",sub,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_32 = -1;
	{
		I_64 result1 = base - i_32;
		I_64 result2 = i_32 - base;
		cout << "I_64," << hex << base << ",sub,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_32 = 1;
	{
		I_64 result1 = base - i_32;
		I_64 result2 = i_32 - base;
		cout << "I_64," << hex << base << ",sub,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_32 = -1;
	{
		I_64 result1 = base - i_32;
		I_64 result2 = i_32 - base;
		cout << "I_64," << hex << base << ",sub,I_32," << hex << i_32 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_64," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_64," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_64," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_64," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_64," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_64," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_64," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "I_64," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION I_64 WITH UDATA" << endl;

	cout << "INVALID: I_64,sub,UDATA" << endl;


	cout << "SUBSECTION I_64 WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		I_64 result1 = base - idata;
		I_64 result2 = idata - base;
		cout << "I_64," << hex << base << ",sub,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		I_64 result1 = base - idata;
		I_64 result2 = idata - base;
		cout << "I_64," << hex << base << ",sub,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		I_64 result1 = base - idata;
		I_64 result2 = idata - base;
		cout << "I_64," << hex << base << ",sub,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		I_64 result1 = base - idata;
		I_64 result2 = idata - base;
		cout << "I_64," << hex << base << ",sub,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	idata = 1;
	{
		I_64 result1 = base - idata;
		I_64 result2 = idata - base;
		cout << "I_64," << hex << base << ",sub,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x8000000000000000;
	idata = -1;
	{
		I_64 result1 = base - idata;
		I_64 result2 = idata - base;
		cout << "I_64," << hex << base << ",sub,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	idata = 1;
	{
		I_64 result1 = base - idata;
		I_64 result2 = idata - base;
		cout << "I_64," << hex << base << ",sub,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffffffffffff;
	idata = -1;
	{
		I_64 result1 = base - idata;
		I_64 result2 = idata - base;
		cout << "I_64," << hex << base << ",sub,IDATA," << hex << idata << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testaddUDATA(void)	
{
	//Locals
	UDATA base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION UDATA add" << endl;

	cout << "SUBSECTION UDATA WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		UDATA result1 = base + u_8;
		UDATA result2 = u_8 + base;
		cout << "UDATA," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		UDATA result1 = base + u_8;
		UDATA result2 = u_8 + base;
		cout << "UDATA," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		UDATA result1 = base + u_8;
		UDATA result2 = u_8 + base;
		cout << "UDATA," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_8 = 1;
	{
		UDATA result1 = base + u_8;
		UDATA result2 = u_8 + base;
		cout << "UDATA," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		UDATA result1 = base + u_16;
		UDATA result2 = u_16 + base;
		cout << "UDATA," << hex << base << ",add,U_16," << hex << u_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		UDATA result1 = base + u_16;
		UDATA result2 = u_16 + base;
		cout << "UDATA," << hex << base << ",add,U_16," << hex << u_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		UDATA result1 = base + u_16;
		UDATA result2 = u_16 + base;
		cout << "UDATA," << hex << base << ",add,U_16," << hex << u_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_16 = 1;
	{
		UDATA result1 = base + u_16;
		UDATA result2 = u_16 + base;
		cout << "UDATA," << hex << base << ",add,U_16," << hex << u_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		UDATA result1 = base + u_32;
		UDATA result2 = u_32 + base;
		cout << "UDATA," << hex << base << ",add,U_32," << hex << u_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		UDATA result1 = base + u_32;
		UDATA result2 = u_32 + base;
		cout << "UDATA," << hex << base << ",add,U_32," << hex << u_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		UDATA result1 = base + u_32;
		UDATA result2 = u_32 + base;
		cout << "UDATA," << hex << base << ",add,U_32," << hex << u_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_32 = 1;
	{
		UDATA result1 = base + u_32;
		UDATA result2 = u_32 + base;
		cout << "UDATA," << hex << base << ",add,U_32," << hex << u_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "UDATA," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "UDATA," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "UDATA," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_64 = 1;
	{
		U_64 result1 = base + u_64;
		U_64 result2 = u_64 + base;
		cout << "UDATA," << hex << base << ",add,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		UDATA result1 = base + i_16;
		UDATA result2 = i_16 + base;
		cout << "UDATA," << hex << base << ",add,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		UDATA result1 = base + i_16;
		UDATA result2 = i_16 + base;
		cout << "UDATA," << hex << base << ",add,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		UDATA result1 = base + i_16;
		UDATA result2 = i_16 + base;
		cout << "UDATA," << hex << base << ",add,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		UDATA result1 = base + i_16;
		UDATA result2 = i_16 + base;
		cout << "UDATA," << hex << base << ",add,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_16 = 1;
	{
		UDATA result1 = base + i_16;
		UDATA result2 = i_16 + base;
		cout << "UDATA," << hex << base << ",add,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_16 = -1;
	{
		UDATA result1 = base + i_16;
		UDATA result2 = i_16 + base;
		cout << "UDATA," << hex << base << ",add,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		UDATA result1 = base + i_32;
		UDATA result2 = i_32 + base;
		cout << "UDATA," << hex << base << ",add,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		UDATA result1 = base + i_32;
		UDATA result2 = i_32 + base;
		cout << "UDATA," << hex << base << ",add,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		UDATA result1 = base + i_32;
		UDATA result2 = i_32 + base;
		cout << "UDATA," << hex << base << ",add,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		UDATA result1 = base + i_32;
		UDATA result2 = i_32 + base;
		cout << "UDATA," << hex << base << ",add,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_32 = 1;
	{
		UDATA result1 = base + i_32;
		UDATA result2 = i_32 + base;
		cout << "UDATA," << hex << base << ",add,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_32 = -1;
	{
		UDATA result1 = base + i_32;
		UDATA result2 = i_32 + base;
		cout << "UDATA," << hex << base << ",add,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH I_64" << endl;

	cout << "INVALID: UDATA,add,I_64" << endl;


	cout << "SUBSECTION UDATA WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "UDATA," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "UDATA," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "UDATA," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "UDATA," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		UDATA result1 = base + idata;
		UDATA result2 = idata + base;
		cout << "UDATA," << hex << base << ",add,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		UDATA result1 = base + idata;
		UDATA result2 = idata + base;
		cout << "UDATA," << hex << base << ",add,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		UDATA result1 = base + idata;
		UDATA result2 = idata + base;
		cout << "UDATA," << hex << base << ",add,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		UDATA result1 = base + idata;
		UDATA result2 = idata + base;
		cout << "UDATA," << hex << base << ",add,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	idata = 1;
	{
		UDATA result1 = base + idata;
		UDATA result2 = idata + base;
		cout << "UDATA," << hex << base << ",add,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	idata = -1;
	{
		UDATA result1 = base + idata;
		UDATA result2 = idata + base;
		cout << "UDATA," << hex << base << ",add,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testsubUDATA(void)	
{
	//Locals
	UDATA base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION UDATA sub" << endl;

	cout << "SUBSECTION UDATA WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		UDATA result1 = base - u_8;
		UDATA result2 = u_8 - base;
		cout << "UDATA," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		UDATA result1 = base - u_8;
		UDATA result2 = u_8 - base;
		cout << "UDATA," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		UDATA result1 = base - u_8;
		UDATA result2 = u_8 - base;
		cout << "UDATA," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_8 = 1;
	{
		UDATA result1 = base - u_8;
		UDATA result2 = u_8 - base;
		cout << "UDATA," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		UDATA result1 = base - u_16;
		UDATA result2 = u_16 - base;
		cout << "UDATA," << hex << base << ",sub,U_16," << hex << u_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		UDATA result1 = base - u_16;
		UDATA result2 = u_16 - base;
		cout << "UDATA," << hex << base << ",sub,U_16," << hex << u_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		UDATA result1 = base - u_16;
		UDATA result2 = u_16 - base;
		cout << "UDATA," << hex << base << ",sub,U_16," << hex << u_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_16 = 1;
	{
		UDATA result1 = base - u_16;
		UDATA result2 = u_16 - base;
		cout << "UDATA," << hex << base << ",sub,U_16," << hex << u_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		UDATA result1 = base - u_32;
		UDATA result2 = u_32 - base;
		cout << "UDATA," << hex << base << ",sub,U_32," << hex << u_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		UDATA result1 = base - u_32;
		UDATA result2 = u_32 - base;
		cout << "UDATA," << hex << base << ",sub,U_32," << hex << u_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		UDATA result1 = base - u_32;
		UDATA result2 = u_32 - base;
		cout << "UDATA," << hex << base << ",sub,U_32," << hex << u_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_32 = 1;
	{
		UDATA result1 = base - u_32;
		UDATA result2 = u_32 - base;
		cout << "UDATA," << hex << base << ",sub,U_32," << hex << u_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH U_64" << endl;
	base = 0;
	u_64 = 0;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "UDATA," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "UDATA," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_64 = 2;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "UDATA," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	u_64 = 1;
	{
		U_64 result1 = base - u_64;
		U_64 result2 = u_64 - base;
		cout << "UDATA," << hex << base << ",sub,U_64," << hex << u_64 << ",U_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		UDATA result1 = base - i_16;
		UDATA result2 = i_16 - base;
		cout << "UDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		UDATA result1 = base - i_16;
		UDATA result2 = i_16 - base;
		cout << "UDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		UDATA result1 = base - i_16;
		UDATA result2 = i_16 - base;
		cout << "UDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		UDATA result1 = base - i_16;
		UDATA result2 = i_16 - base;
		cout << "UDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_16 = 1;
	{
		UDATA result1 = base - i_16;
		UDATA result2 = i_16 - base;
		cout << "UDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_16 = -1;
	{
		UDATA result1 = base - i_16;
		UDATA result2 = i_16 - base;
		cout << "UDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		UDATA result1 = base - i_32;
		UDATA result2 = i_32 - base;
		cout << "UDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		UDATA result1 = base - i_32;
		UDATA result2 = i_32 - base;
		cout << "UDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		UDATA result1 = base - i_32;
		UDATA result2 = i_32 - base;
		cout << "UDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		UDATA result1 = base - i_32;
		UDATA result2 = i_32 - base;
		cout << "UDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_32 = 1;
	{
		UDATA result1 = base - i_32;
		UDATA result2 = i_32 - base;
		cout << "UDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	i_32 = -1;
	{
		UDATA result1 = base - i_32;
		UDATA result2 = i_32 - base;
		cout << "UDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH I_64" << endl;

	cout << "INVALID: UDATA,sub,I_64" << endl;


	cout << "SUBSECTION UDATA WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "UDATA," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "UDATA," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "UDATA," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "UDATA," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION UDATA WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		UDATA result1 = base - idata;
		UDATA result2 = idata - base;
		cout << "UDATA," << hex << base << ",sub,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		UDATA result1 = base - idata;
		UDATA result2 = idata - base;
		cout << "UDATA," << hex << base << ",sub,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		UDATA result1 = base - idata;
		UDATA result2 = idata - base;
		cout << "UDATA," << hex << base << ",sub,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		UDATA result1 = base - idata;
		UDATA result2 = idata - base;
		cout << "UDATA," << hex << base << ",sub,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	idata = 1;
	{
		UDATA result1 = base - idata;
		UDATA result2 = idata - base;
		cout << "UDATA," << hex << base << ",sub,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0xffffffff;
	idata = -1;
	{
		UDATA result1 = base - idata;
		UDATA result2 = idata - base;
		cout << "UDATA," << hex << base << ",sub,IDATA," << hex << idata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testaddIDATA(void)	
{
	//Locals
	IDATA base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION IDATA add" << endl;

	cout << "SUBSECTION IDATA WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		IDATA result1 = base + u_8;
		IDATA result2 = u_8 + base;
		cout << "IDATA," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		IDATA result1 = base + u_8;
		IDATA result2 = u_8 + base;
		cout << "IDATA," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		IDATA result1 = base + u_8;
		IDATA result2 = u_8 + base;
		cout << "IDATA," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_8 = 1;
	{
		IDATA result1 = base + u_8;
		IDATA result2 = u_8 + base;
		cout << "IDATA," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_8 = 1;
	{
		IDATA result1 = base + u_8;
		IDATA result2 = u_8 + base;
		cout << "IDATA," << hex << base << ",add,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		IDATA result1 = base + u_16;
		IDATA result2 = u_16 + base;
		cout << "IDATA," << hex << base << ",add,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		IDATA result1 = base + u_16;
		IDATA result2 = u_16 + base;
		cout << "IDATA," << hex << base << ",add,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		IDATA result1 = base + u_16;
		IDATA result2 = u_16 + base;
		cout << "IDATA," << hex << base << ",add,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_16 = 1;
	{
		IDATA result1 = base + u_16;
		IDATA result2 = u_16 + base;
		cout << "IDATA," << hex << base << ",add,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_16 = 1;
	{
		IDATA result1 = base + u_16;
		IDATA result2 = u_16 + base;
		cout << "IDATA," << hex << base << ",add,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		IDATA result1 = base + u_32;
		IDATA result2 = u_32 + base;
		cout << "IDATA," << hex << base << ",add,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		IDATA result1 = base + u_32;
		IDATA result2 = u_32 + base;
		cout << "IDATA," << hex << base << ",add,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		IDATA result1 = base + u_32;
		IDATA result2 = u_32 + base;
		cout << "IDATA," << hex << base << ",add,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_32 = 1;
	{
		IDATA result1 = base + u_32;
		IDATA result2 = u_32 + base;
		cout << "IDATA," << hex << base << ",add,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_32 = 1;
	{
		IDATA result1 = base + u_32;
		IDATA result2 = u_32 + base;
		cout << "IDATA," << hex << base << ",add,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH U_64" << endl;

	cout << "INVALID: IDATA,add,U_64" << endl;


	cout << "SUBSECTION IDATA WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		IDATA result1 = base + i_16;
		IDATA result2 = i_16 + base;
		cout << "IDATA," << hex << base << ",add,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		IDATA result1 = base + i_16;
		IDATA result2 = i_16 + base;
		cout << "IDATA," << hex << base << ",add,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		IDATA result1 = base + i_16;
		IDATA result2 = i_16 + base;
		cout << "IDATA," << hex << base << ",add,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		IDATA result1 = base + i_16;
		IDATA result2 = i_16 + base;
		cout << "IDATA," << hex << base << ",add,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_16 = 1;
	{
		IDATA result1 = base + i_16;
		IDATA result2 = i_16 + base;
		cout << "IDATA," << hex << base << ",add,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_16 = -1;
	{
		IDATA result1 = base + i_16;
		IDATA result2 = i_16 + base;
		cout << "IDATA," << hex << base << ",add,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_16 = 1;
	{
		IDATA result1 = base + i_16;
		IDATA result2 = i_16 + base;
		cout << "IDATA," << hex << base << ",add,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_16 = -1;
	{
		IDATA result1 = base + i_16;
		IDATA result2 = i_16 + base;
		cout << "IDATA," << hex << base << ",add,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		IDATA result1 = base + i_32;
		IDATA result2 = i_32 + base;
		cout << "IDATA," << hex << base << ",add,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		IDATA result1 = base + i_32;
		IDATA result2 = i_32 + base;
		cout << "IDATA," << hex << base << ",add,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		IDATA result1 = base + i_32;
		IDATA result2 = i_32 + base;
		cout << "IDATA," << hex << base << ",add,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		IDATA result1 = base + i_32;
		IDATA result2 = i_32 + base;
		cout << "IDATA," << hex << base << ",add,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_32 = 1;
	{
		IDATA result1 = base + i_32;
		IDATA result2 = i_32 + base;
		cout << "IDATA," << hex << base << ",add,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_32 = -1;
	{
		IDATA result1 = base + i_32;
		IDATA result2 = i_32 + base;
		cout << "IDATA," << hex << base << ",add,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_32 = 1;
	{
		IDATA result1 = base + i_32;
		IDATA result2 = i_32 + base;
		cout << "IDATA," << hex << base << ",add,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_32 = -1;
	{
		IDATA result1 = base + i_32;
		IDATA result2 = i_32 + base;
		cout << "IDATA," << hex << base << ",add,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "IDATA," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "IDATA," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "IDATA," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "IDATA," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "IDATA," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "IDATA," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_64 = 1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "IDATA," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_64 = -1;
	{
		I_64 result1 = base + i_64;
		I_64 result2 = i_64 + base;
		cout << "IDATA," << hex << base << ",add,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "IDATA," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "IDATA," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "IDATA," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "IDATA," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	udata = 1;
	{
		UDATA result1 = base + udata;
		UDATA result2 = udata + base;
		cout << "IDATA," << hex << base << ",add,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "IDATA," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "IDATA," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "IDATA," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "IDATA," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "IDATA," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "IDATA," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	idata = 1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "IDATA," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	idata = -1;
	{
		IDATA result1 = base + idata;
		IDATA result2 = idata + base;
		cout << "IDATA," << hex << base << ",add,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

static void testsubIDATA(void)	
{
	//Locals
	IDATA base;
	U_8 u_8;
	U_16 u_16;
	U_32 u_32;
	U_64 u_64;
	I_16 i_16;
	I_32 i_32;
	I_64 i_64;
	UDATA udata;
	IDATA idata;

	cout << "START SECTION IDATA sub" << endl;

	cout << "SUBSECTION IDATA WITH U_8" << endl;
	base = 0;
	u_8 = 0;
	{
		IDATA result1 = base - u_8;
		IDATA result2 = u_8 - base;
		cout << "IDATA," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 1;
	{
		IDATA result1 = base - u_8;
		IDATA result2 = u_8 - base;
		cout << "IDATA," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_8 = 2;
	{
		IDATA result1 = base - u_8;
		IDATA result2 = u_8 - base;
		cout << "IDATA," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_8 = 1;
	{
		IDATA result1 = base - u_8;
		IDATA result2 = u_8 - base;
		cout << "IDATA," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_8 = 1;
	{
		IDATA result1 = base - u_8;
		IDATA result2 = u_8 - base;
		cout << "IDATA," << hex << base << ",sub,U_8," << hex << (unsigned int)u_8 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH U_16" << endl;
	base = 0;
	u_16 = 0;
	{
		IDATA result1 = base - u_16;
		IDATA result2 = u_16 - base;
		cout << "IDATA," << hex << base << ",sub,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 1;
	{
		IDATA result1 = base - u_16;
		IDATA result2 = u_16 - base;
		cout << "IDATA," << hex << base << ",sub,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_16 = 2;
	{
		IDATA result1 = base - u_16;
		IDATA result2 = u_16 - base;
		cout << "IDATA," << hex << base << ",sub,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_16 = 1;
	{
		IDATA result1 = base - u_16;
		IDATA result2 = u_16 - base;
		cout << "IDATA," << hex << base << ",sub,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_16 = 1;
	{
		IDATA result1 = base - u_16;
		IDATA result2 = u_16 - base;
		cout << "IDATA," << hex << base << ",sub,U_16," << hex << u_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH U_32" << endl;
	base = 0;
	u_32 = 0;
	{
		IDATA result1 = base - u_32;
		IDATA result2 = u_32 - base;
		cout << "IDATA," << hex << base << ",sub,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 1;
	{
		IDATA result1 = base - u_32;
		IDATA result2 = u_32 - base;
		cout << "IDATA," << hex << base << ",sub,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	u_32 = 2;
	{
		IDATA result1 = base - u_32;
		IDATA result2 = u_32 - base;
		cout << "IDATA," << hex << base << ",sub,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	u_32 = 1;
	{
		IDATA result1 = base - u_32;
		IDATA result2 = u_32 - base;
		cout << "IDATA," << hex << base << ",sub,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	u_32 = 1;
	{
		IDATA result1 = base - u_32;
		IDATA result2 = u_32 - base;
		cout << "IDATA," << hex << base << ",sub,U_32," << hex << u_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH U_64" << endl;

	cout << "INVALID: IDATA,sub,U_64" << endl;


	cout << "SUBSECTION IDATA WITH I_16" << endl;
	base = 0;
	i_16 = 0;
	{
		IDATA result1 = base - i_16;
		IDATA result2 = i_16 - base;
		cout << "IDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 1;
	{
		IDATA result1 = base - i_16;
		IDATA result2 = i_16 - base;
		cout << "IDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = 2;
	{
		IDATA result1 = base - i_16;
		IDATA result2 = i_16 - base;
		cout << "IDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_16 = -1;
	{
		IDATA result1 = base - i_16;
		IDATA result2 = i_16 - base;
		cout << "IDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_16 = 1;
	{
		IDATA result1 = base - i_16;
		IDATA result2 = i_16 - base;
		cout << "IDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_16 = -1;
	{
		IDATA result1 = base - i_16;
		IDATA result2 = i_16 - base;
		cout << "IDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_16 = 1;
	{
		IDATA result1 = base - i_16;
		IDATA result2 = i_16 - base;
		cout << "IDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_16 = -1;
	{
		IDATA result1 = base - i_16;
		IDATA result2 = i_16 - base;
		cout << "IDATA," << hex << base << ",sub,I_16," << hex << i_16 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH I_32" << endl;
	base = 0;
	i_32 = 0;
	{
		IDATA result1 = base - i_32;
		IDATA result2 = i_32 - base;
		cout << "IDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 1;
	{
		IDATA result1 = base - i_32;
		IDATA result2 = i_32 - base;
		cout << "IDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = 2;
	{
		IDATA result1 = base - i_32;
		IDATA result2 = i_32 - base;
		cout << "IDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_32 = -1;
	{
		IDATA result1 = base - i_32;
		IDATA result2 = i_32 - base;
		cout << "IDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_32 = 1;
	{
		IDATA result1 = base - i_32;
		IDATA result2 = i_32 - base;
		cout << "IDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_32 = -1;
	{
		IDATA result1 = base - i_32;
		IDATA result2 = i_32 - base;
		cout << "IDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_32 = 1;
	{
		IDATA result1 = base - i_32;
		IDATA result2 = i_32 - base;
		cout << "IDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_32 = -1;
	{
		IDATA result1 = base - i_32;
		IDATA result2 = i_32 - base;
		cout << "IDATA," << hex << base << ",sub,I_32," << hex << i_32 << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH I_64" << endl;
	base = 0;
	i_64 = 0;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "IDATA," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "IDATA," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = 2;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "IDATA," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "IDATA," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "IDATA," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "IDATA," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_64 = 1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "IDATA," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	i_64 = -1;
	{
		I_64 result1 = base - i_64;
		I_64 result2 = i_64 - base;
		cout << "IDATA," << hex << base << ",sub,I_64," << hex << i_64 << ",I_64," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH UDATA" << endl;
	base = 0;
	udata = 0;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "IDATA," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "IDATA," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	udata = 2;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "IDATA," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "IDATA," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	udata = 1;
	{
		UDATA result1 = base - udata;
		UDATA result2 = udata - base;
		cout << "IDATA," << hex << base << ",sub,UDATA," << hex << udata << ",UDATA," << hex << result1 << "," << hex << result2 << endl;
	}

	cout << "SUBSECTION IDATA WITH IDATA" << endl;
	base = 0;
	idata = 0;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "IDATA," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "IDATA," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = 2;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "IDATA," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "IDATA," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "IDATA," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x80000000;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "IDATA," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	idata = 1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "IDATA," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}
	base = 0x7fffffff;
	idata = -1;
	{
		IDATA result1 = base - idata;
		IDATA result2 = idata - base;
		cout << "IDATA," << hex << base << ",sub,IDATA," << hex << idata << ",IDATA," << hex << result1 << "," << hex << result2 << endl;
	}

}

int main(int argc, char * argv[]) 
{
	
	testaddU_8();

	
	testsubU_8();

	
	testaddU_16();

	
	testsubU_16();

	
	testaddU_32();

	
	testsubU_32();

	
	testaddU_64();

	
	testsubU_64();

	
	testaddI_16();

	
	testsubI_16();

	
	testaddI_32();

	
	testsubI_32();

	
	testaddI_64();

	
	testsubI_64();

	
	testaddUDATA();

	
	testsubUDATA();

	
	testaddIDATA();

	
	testsubIDATA();


	return 0;
}

